list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

"""
列表的切片标记操作 slice notation

list[i:j]

从i到j进行切片, 包括i但不包括j

i或j使用正数表示按照步进方向进行位置查找,[0:len]
i或j使用负数表示按照步进方向反向进行位置查找,[-len:]
"""
print(list[:5])  # [0, 1, 2, 3, 4]
print(list[3:5])  # [3, 4]

print(list[-1:])  # [9]
print(list[-3:-1])  # [7, 8]

print(list[:])  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list[0:len(list)])  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list[-len(list):])  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
"""

list[i:j:s]

从i到j进行切片, 包括i但不包括j

i或j使用正数表示按照步进方向进行位置查找,[0:len]
i或j使用负数表示按照步进方向反向进行位置查找,[-len:]

s代表步进, 默认为1, 表示从i开始切片,每次递增1
s为正数时, 从左往右进行切片, i在j的左边
s为负数时, 从右往左进行切片, i在j的右边
"""
# 正序切片 #

print(list[::2])  # [0, 2, 4, 6, 8]

print(list[0:len(list) - 1:2])  # [0, 2, 4, 6, 8]
print(list[-len(list):-1:2])  # [0, 2, 4, 6, 8]

print(list[len(list)-1:0:-2])  # [9, 7, 5, 3, 1]
print(list[-1:-len(list):-2])  # [9, 7, 5, 3, 1]

print(list[3:7:2])  # [3, 5]

# 逆序切片 #

print(list[::-1])  # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
print(list[len(list) - 1::-1])  # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
print(list[-1::-1])  # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

print(list[-1::-1])  # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

print(list[-3:-7:-1])  # [7, 6, 5, 4]
print(list[7:3:-1])  # [7, 6, 5, 4]
